# 【类型转换】
# 隐式转换：运算时自动进行
# 显式转换：使用类型转换函数
# int(x)  将x转换为整数类型
# float(x) 将x转换为浮点数类型
# str(x)   将x转换为字符串类型
# chr(x)  将整数x转换为一个字符,ASCII数字对应字符的值
# ord(x)  将一个字符x转换为其对应的整数值，ASCII中字符对应的数字的值
# hex(x)  将一个整数x转换为一个十六进制字符串
# oct(x)  将一个整数x转换为一个八进制字符串
# bin(x)  将一个整数x转换为一个二进制字符串

x = 10
y = 3
z = x / y  # 在执行除法运算的时候，将运算的值赋值给z
print(z, type(z))  # 隐式转换：通过运算，隐式的转化了结果的类型

# float类型转换为int类型，只保留整数部分
print('float类型转换为int类型：', int(z))
print('float类型转换为int类型：', int(3.14))
print('float类型转换为int类型：', int(-3.14))
print('float类型转换为int类型：', int(-3.56))

# int类型转换为float类型
print('int类型转换为float类型：', float(10))

# str类型转换为int类型
print('str类型转换为int类型：', int('10') + int('20'))

# str类型转换为int/float类型报错情况
# print('str类型转换为int类型：', int('10.5a'))  # ValueError: invalid literal for int() with base 10: '10.5a'
# print('str类型转换为int类型：', int('3.14'))  # ValueError: invalid literal for int() with base 10: '3.14'
# print(float('3.14a'))  # ValueError: could not convert string to float: '3.14a'

# chr()和ord()函数一对
print(chr(81))
print(ord('中'))

# 进制之间的转换操作，十进制与其他进制之间的转换
print('十进制转换为十六进制:', hex(26472))  # 十进制转换为十六进制 0x6768  0x开头
print('十进制转换为八进制:', oct(26472))  # 十进制转换为十六进制   0o63550  0o开头
print('十进制转换为二进制:', bin(26472))  # 十进制转换为十六进制   0b110011101101000  0b开头


